package pe.edu.upc.dew.Grupo1.dao;

import java.util.List;

import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.simple.SimpleJdbcDaoSupport;

import pe.edu.upc.dew.Grupo1.model.Tarifa;
import pe.edu.upc.dew.Grupo1.model.Usuario;

public class UsuarioDaoJdbc extends SimpleJdbcDaoSupport implements UsuarioDao{

	@Override
	public void insert(Usuario usuario) {
		getSimpleJdbcTemplate().update("insert into usuario(CodigoUsuario,Nombre,Apellido,Telefono,Direccion,Login,clave,Tipo,CodigoLocal) values(?,?,?,?,?,?,?,?,?)",
				usuario.getCodigoUsuario(),usuario.getNombre(),usuario.getApellido(),usuario.getTelefono(),usuario.getDireccion(),usuario.getLogin(),
				usuario.getClave(),usuario.getTipo().getTipo(),usuario.getLocal().getCodigoLocal());
	}

	@Override
	public Usuario getUsuarioPorCodigo(int codigo) {
		return getSimpleJdbcTemplate().
		queryForObject("select CodigoUsuario,Nombre,Apellido,Telefono,Direccion,Login,clave,Tipo,CodigoLocal from `usuario` where CodigoUsuario = ?", 
				new UsuarioRowMapper(), codigo);
	}
	
	@Override
	public Usuario getUsuarioPorCodigoPass(Usuario usuario) {
		return getSimpleJdbcTemplate().
		queryForObject("select CodigoUsuario,Nombre,Apellido,Telefono,Direccion,Login,clave,Tipo,CodigoLocal from `usuario` where Login = ? and clave = ?", 
				new UsuarioRowMapper(), usuario.getLogin(), usuario.getClave());
	}

	@Override
	public void deleteUsuarioPorCodigo(int codigo) {
		getSimpleJdbcTemplate().update("delete from `usuario` where CodigoUsuario=?",codigo);
	}

	@Override
	public void updatePorCodigo(Usuario usuario) {
		getSimpleJdbcTemplate().
		update("update `usuario` set Nombre=?,Apellido=?,Telefono=?,Direccion=?,Login=?,clave=?,Tipo=?,CodigoLocal=? where CodigoUsuario=?", 
				usuario.getNombre(),usuario.getApellido(),usuario.getTelefono(),usuario.getDireccion(),usuario.getLogin(),usuario.getClave(),usuario.getTipo().getTipo(),usuario.getLocal().getCodigoLocal(),usuario.getCodigoUsuario());
	}

	@Override
	public List<Usuario> getUsuariosPorNombre(String nombre) {
		return getSimpleJdbcTemplate().
		query("select CodigoUsuario,Nombre,Apellido,Telefono,Direccion,Login,clave,Tipo,CodigoLocal from `usuario` where Nombre like CONCAT('%', ?)", 
				new UsuarioRowMapper(),nombre);
	}

	@Override
	public int getConteoUsuarios() {
		return getSimpleJdbcTemplate().queryForInt("select count(*) from `usuario`");
	}

}
